package com.repair.appraise.controller;

import com.repair.api.comment.request.param.CommentAddParam;
import com.repair.api.comment.response.vo.CommentVO;
import com.repair.appraise.service.CommentService;
import com.repair.base.result.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * <p>
 * 评论 前端控制器
 * </p>
 *
 * @author 常月乔
 * @since 2024-10-14
 */
@Slf4j
@RestController
@RequestMapping("/comment")
@Api(tags = "评论模块")
public class CommentController {

    @Autowired
    private CommentService commentService;


    /**
     * 发表评论功能
     * <p>
     * 此方法用于接收前端提交的评论信息，并调用服务层的方法进行处理
     * 它是系统中处理评论插入操作的入口
     *
     * @param //comment 评论对象，包含评论的所有相关信息
     * @return 返回一个 JsonResult 对象，表示操作的结果
     * <p>
     * 为什么使用 @RequestBody 注解：
     * - 因为需要从客户端的 HTTP 请求中获取评论数据，这些数据通常以 JSON 格式发送
     * - @RequestBody 注解可以将 HTTP 请求的 body 部分解析为 Java 对象，即 Comment 实例
     * <p>
     * 为什么使用 @PostMapping 注解：
     * - 因为这个操作是向服务器发送数据（评论），即执行插入操作，符合 POST 请求的特点
     * - @PostMapping 注解用于处理 HTTP POST 请求，与之对应的是 @GetMapping、@PutMapping 等
     * <p>
     * 为什么返回 JsonResult：
     * - 因为前端通常需要知道操作是否成功，以及可能的返回数据
     * - JsonResult 是一种封装了成功、失败、数据等信息的响应对象，便于前端解析
     */

    @ApiOperation(value = "发表评论功能")
    @PostMapping("add")
    public JsonResult<String> addComments(@RequestBody CommentAddParam param) {
        commentService.addComments(param);
        return JsonResult.ok("评价成功");
    }

    /**
     * 2.获取评论功能
     */
//    @ApiOperation(value = "获取评论功能")
//    @GetMapping("select")
//    public JsonResult<String> selectComments(@RequestBody CommentAddParam param) {
//        log.debug("查询评论:commentQuery={}", param);
//        System.out.println("id = " + param);
//        List<CommentVO> list = commentService.slectComments(param);
//        return JsonResult.ok(list);
//    }

    /**
     * 过滤评价列表功能
     */
//    @ApiOperation(value = "过滤评价列表功能")
//    @GetMapping("filter")
//    public JsonResult<String> filterComments(@PathVariable Integer userId) {
//        log.debug("过滤评论:commentQuery={}", userId);
//        // 调用评论服务接口，根据用户ID过滤评论
//        commentService.filterComments(userId);
//        // 返回成功的空结果
//        return JsonResult.ok();
//    }

    /**
     * 评分评论功能
     */
//    @ApiOperation(value = "评分评论功能")
//    @PostMapping("rating")
//    public JsonResult<String> ratingComment(@PathVariable Integer commentId) {
//        log.debug("评分评论:commentQuery={}", commentId);
//        // 调用评论服务接口，根据评论ID评分评论
//        commentService.ratingComment(commentId);
//        // 返回成功的空结果
//        return JsonResult.ok();
//    }

    /**
     * 5.逻辑删除(1为未删除，0为已删除)
     *
     * @param deleted
     * @return
     */
//    @ApiOperation(value = "逻辑删除(1为未删除，0为已删除)")
//    @PostMapping("delete")
//    public JsonResult<String> deleteComments(@PathVariable Integer deleted) {
//        log.debug("删除评论:deleted={}", deleted);
//        commentService.deleteComments(deleted);
//        return JsonResult.ok();
//    }
//
//    // 删除评论
//    @DeleteMapping("/{id}")
//    public void deleteCommentt(@PathVariable Long id) {
////        commentService.deleteCommentt(id);
//    }
}
